Support for direct rendering was purposefully designed into OpenGL's GLX specification. While use of the GLX extension protocol permits interoperability and network-extensibility of OpenGL rendering, forcing the X server as an intermediary for OpenGL rendering imposes inherent limitations on OpenGL rendering performance. Permitting direct rendering avoids the unacceptable situation where expensive, high-performance graphics hardware subsystems designed to support OpenGL [1,6] have their graphics performance potential starved by the overhead incurred by indirect rendering.
Using OpenGL display lists (non-editable sequences of OpenGL commands
that can be downloaded into the X server and later executed) can ease
the burden of indirect rendering since it minimizes the GLX protocol
needed for rendering. However, use of display lists is often inappropriate
for many applications, particularly applications with very dynamic
scenes. Such applications favor using immediate mode rendering that
requires much higher bandwidth for the OpenGL command stream.
Measurements of the IRIX 5.2 OpenGL implementation show indirect
immediate mode rendering has inferior performance to direct rendered
immediate mode [10].
Even programs heavily reliant on
display lists are slower when rendering indirectly.